ユニオン型(union type)
TypeScriptのunion型は「or」を表現できるんですよね。「または」という意味のロジック。
アプリケーションロジックでもドメインロジックでも、「または」という処理をデータとして表したい状況は発生すると思っていて、GoFのデザインパターンでも疑似的にそういうのがあるわけですが、これを型で表現できるのは本当に大きいです。
uhyoさん:はい。典型的なのは、「外部からデータを取得する」という処理を書くときにデータとステータスを両方管理する必要がある、みたいな状況ですね。
取得が終わったらデータが存在してステータスは「done」とかでいいとして、じゃあローディング中のステータスのときデータは何にすればいいんだろう、と。
伊藤さん:unionが使えないと、そこにnullが入ってきてしまう。
uhyoさん:でも、そもそもローディング中にはデータっていう概念がいらないはずなんですよ。
「データ」と「ステータス」の2つの情報を並列にして扱う必要はなくて、「データがない状態」と「データがある状態」を表現できればいい。
それを的確に表現するには、union型のような機能があればいいわけです。